import express from 'express'
import mysql from 'mysql2'
import cors from 'cors'
import jwt from 'jsonwebtoken'

const app = express()

// 中间件
app.use(cors())
app.use(express.json())

// 数据库连接
const db = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '123456',
  database: 'appbold_rewrite'
})

// 测试数据库连接
db.connect((err) => {
  if (err) {
    console.error('数据库连接失败:', err)
    return
  }
  console.log('数据库连接成功!')
})

// 定义密钥
const SECRET_KEY = '你的密钥'

// 登录接口
app.post('/api/login', (req, res) => {
  try {
    const { username, password } = req.body
    console.log('登录请求:', username, password)

    if (username === 'admin' && password === '123456') {
      const token = jwt.sign({ username }, SECRET_KEY, { expiresIn: '2m' })
      res.json({
        code: 200,
        message: '登录成功',
        data: { token }
      })
    } else {
      res.json({
        code: 401,
        message: '用户名或密码错误'
      })
    }
  } catch (error) {
    console.error('登录错误:', error)
    res.status(500).json({
      code: 500,
      message: '服务器错误'
    })
  }
})

// token验证中间件
const verifyToken = (req, res, next) => {
  try {
    const token = req.headers.authorization?.split(' ')[1]

    if (!token) {
      return res.status(401).json({
        code: 401,
        message: '请先登录'
      })
    }

    const decoded = jwt.verify(token, SECRET_KEY)
    req.user = decoded
    next()
  } catch (error) {
    console.error('Token验证错误:', error)
    res.status(401).json({
      code: 401,
      message: 'token无效或已过期'
    })
  }
}

// 获取文章列表（需要token验证）
app.get('/api/get', verifyToken, (req, res) => {
  try {
    db.query('SELECT * FROM articles', (err, results) => {
      if (err) {
        console.error('查询错误:', err)
        return res.status(500).json({
          code: 500,
          message: '数据库查询错误'
        })
      }

      res.json({
        code: 200,
        message: '获取成功',
        data: results
      })
    })
  } catch (error) {
    console.error('获取文章列表错误:', error)
    res.status(500).json({
      code: 500,
      message: '服务器错误'
    })
  }
})

// 启动服务器
const PORT = 3000
app.listen(PORT, () => {
  console.log(`服务器运行在 http://localhost:${PORT}`)
})

// 错误处理
process.on('unhandledRejection', (error) => {
  console.error('未处理的 Promise 拒绝:', error)
})

process.on('uncaughtException', (error) => {
  console.error('未捕获的异常:', error)
})
